perm filename TIPTST.SAI[5,ALS] blob
sn#001153 filedate 1972-01-27 generic text, type T, neo UTF8
00010 BEGIN "TIPDAT" COMMENT 23-JAN-72;
00020 COMMENT Reads disk file "PHON" containing words and phonetic
00030 transcriptions. Creates a disk file containing counts of the number
00040 of times each triphone is used in the reviewed list.
00050 ;
00060
00070 REQUIRE "MACROS[SYS,JKS]" SOURCE_FILE;
00080 REQUIRE "COMSUB.HDR[SYS,JKS]" SOURCE_FILE;
00090
00100 INTEGER IIII,JJJJ,KKKK,LL,QQ,XXXX,YYYY;
00110 INTEGER ARRAY AAAA,BBBB[0:4000];
00130 PRELOAD_WITH '435000000000,'645000000000,'445000000000,'635000000000,
00140 '725000000000,
00150 '414500000000,'454500000000,'564700000000,'575700000000,'416700000000 ,
00160 '414100000000,'416200000000;
00170 INTEGER ARRAY PHCOMP[0:11];
00180 INTEGER BRK,BRK1,EOF,I,L,COUNT,COUND,CHOICE,WORDNO;
00190 STRING TSTR,DPH1,DPH2,PH1,PH2,PH3,LIN,WORD,LIN1;
00200 STRING LIST;
00210
00220 SETBR;
00230 OPEN(DSK,"DSK",1,2,0,120,BRK,EOF);
00240 OPEN(DSKO,"DSK",1,0,2,120,BRK,EOF);
00250 OPEN(TTY,"TTY",1,1,1,120,BRK,EOF);
00260
00280 ENTEROUT(DSKO,TSTR←"TIPTST.LST");
02560 LOOKIN(DSK,TSTR←"PHON");
02570 EOF ← FALSE; KKKK←COUNT←COUND ← WORDNO ← 0;
02580
02590 WHILE ¬EOF DO
02600 BEGIN "REREAD"
02610 LIN ← INPUT(DSK,1);
02620 TSTR ← SCAN(LIN,6,BRK);
02630 IF TSTR≠NULL THEN BEGIN WORD ← TSTR; WORDNO ← WORDNO + 1 END;
02640 LIN1←WORD&TB&LIN;
02650 IF LIN[1 FOR 1]=TB THEN LIN←LIN[2 TO ∞];
02660 TSTR←SCAN(LIN,6,BRK);
02670 TSTR←SCAN(LIN,6,BRK);
02680 TSTR←SCAN(LIN,6,BRK);
02690 LIN←LIN&CR;
02700 BRK ← 0; PH1←SCAN(LIN,10,BRK);
02710 PH3←" ";
02730 IF BRK=CR THEN PH3←"XX";
02740 IF BRK=TB THEN BEGIN PH1←SCAN(LIN,10,BRK); IF BRK=CR THEN PH3←"XX"; END;
02750 IF PH3≠"XX" THEN BEGIN
02760 PH2←SCAN(LIN,10,BRK);
02790 FOR JJJJ←0 STEP 1 UNTIL 11 DO
02800 IF CVSIX(PH1)=PHCOMP[JJJJ] THEN DONE;
02810 IF JJJJ≥12 THEN PH1←PH1&" ";
02820 FOR JJJJ←0 STEP 1 UNTIL 11 DO
02830 IF CVSIX(PH2)=PHCOMP[JJJJ] THEN DONE;
02840 IF JJJJ≥12 THEN PH2←PH2&" ";
02850 END;
02860 WHILE (LENGTH(LIN)>0) AND ¬EQU(PH3,"XX") DO
02870 BEGIN
02880 IF BRK≠CR THEN BEGIN
02890 IF BRK=TB THEN
02900 BEGIN
02910 PH1←SCAN(LIN,10,BRK);
02930 IF BRK=CR THEN DONE;
02940 PH2←SCAN(LIN,10,BRK);
02950 IF BRK=CR THEN DONE;
02960 FOR JJJJ←0 STEP 1 UNTIL 11 DO
02970 IF CVSIX(PH1)=PHCOMP[JJJJ] THEN DONE;
02980 IF JJJJ≥12 THEN PH1←PH1&" ";
02990 FOR JJJJ←0 STEP 1 UNTIL 11 DO
03000 IF CVSIX(PH2)=PHCOMP[JJJJ] THEN DONE;
03010 IF JJJJ≥12 THEN PH2←PH2&" ";
03020 END;
03030 PH3 ← SCAN(LIN,10,BRK);
03040 FOR JJJJ←0 STEP 1 UNTIL 11 DO
03050 IF CVSIX(PH3)=PHCOMP[JJJJ] THEN DONE;
03060 IF JJJJ≥12 THEN PH3←PH3&" ";
03070 END ELSE PH3←"XX";
03080 XXXX←CVSIX(PH1&PH2&PH3);
03100 FOR I←0 STEP 1 UNTIL 3999 DO
03110 BEGIN
03120 IF BBBB[I]=0 THEN BEGIN BBBB[I]←XXXX; AAAA[I]←1; COUNT←COUNT+1; DONE END;
03130 IF BBBB[I]=XXXX THEN BEGIN AAAA[I]←AAAA[I]+1; COUND←COUND+1; DONE END;
03132 IF BBBB[I]>XXXX THEN
03134 BEGIN
03136 FOR JJJJ←COUNT-1 STEP -1 UNTIL I DO
03138 BEGIN
03140 AAAA[JJJJ+1]←AAAA[JJJJ];
03142 BBBB[JJJJ+1]←BBBB[JJJJ];
03144 END;
03146 AAAA[I]←1;
03148 BBBB[I]←XXXX;
03150 COUNT←COUNT+1;
03151 DONE;
03152 END;
03156 END;
03158
03160 PH1←PH2; PH2←PH3;
03170 END;
03180 END "REREAD";
03190 CLOSE(DSK);
03200
03210 OUT(DSKO,CR&FF&"The "&CVS(COUNT)&" different triphones found in addition to "
03220 &CVS(COUND)&" duplicates"&CRLF&LF);
03230
03240 KKKK←COUNT-1;
03250 COUNT←0;
03252 FOR I←0 STEP 1 UNTIL KKKK DO
03254 BEGIN
03256 OUT(DSKO,CVXSTR(BBBB[I])&TB);
03258 COUNT←COUNT+1;
03260 IF COUNT≥14 THEN
03262 BEGIN
03264 OUT(DSKO,CRLF);
03266 COUNT←0;
03268 END;
03270 END;
03280 OUT(DSKO,CR&FF&"Usage counts in 10% groups for the "&CVS(KKKK+1)&" triphones in "
03290 &cvs(wordno)&" words used by 2 or more speakers in Jones and Wexman"&CRLF&LF);
03295
03300 FOR JJJJ←KKKK-1 STEP -1 UNTIL 0 DO
03310 FOR I←JJJJ STEP 1 UNTIL KKKK-1 DO
03320 IF AAAA[I]<AAAA[I+1] THEN BEGIN
03330 XXXX←AAAA[I]; AAAA[I]←AAAA[I+1]; AAAA[I+1]←XXXX;
03340 XXXX←BBBB[I]; BBBB[I]←BBBB[I+1]; BBBB[I+1]←XXXX; END
03350 ELSE DONE;
03360 I←0; COUNT←2; SETFORMAT(5,0); LL←AAAA[I]; QQ←1;
03370 KKKK←(KKKK+1+COUND)%10+1;
03380 OUT(DSKO,CVS(AAAA[I])&TB&CVXSTR(BBBB[I])&TB);
03390 FOR I←1 STEP 1 UNTIL 3999 DO
03400 BEGIN
03410 IF AAAA[I]=0 THEN DONE;
03420 IF AAAA[I]≠AAAA[I-1] THEN
03430 BEGIN
03440 IF COUNT MOD 2 =1 THEN
03450 BEGIN
03460 OUT(DSKO,TB); COUNT←COUNT+1;
03470 END;
03480 IF COUNT≥3 THEN BEGIN
03490 FOR L←1 STEP 1 UNTIL 14 DO
03500 IF AAAA[I]≠AAAA[I+L] THEN DONE;
03510 IF COUNT+ L≥14 THEN
03520 BEGIN
03530 OUT(DSKO,CRLF);
03540 COUNT←0; JJJJ←AAAA[I];
03550 END;
03560 END;
03570 IF COUNT≥13 THEN
03580 BEGIN
03590 OUT(DSKO,CRLF);
03600 COUNT←0; JJJJ←AAAA[I];
03610 END;
03620 OUT(DSKO,CVS(AAAA[I])&TB);
03630 COUNT←COUNT+1;
03640 END
03650 ELSE
03660 BEGIN
03670 IF COUNT≥14 THEN
03680 BEGIN
03690 OUT(DSKO,CRLF);
03700 IF AAAA[I]≠JJJJ THEN
03710 BEGIN
03720 JJJJ←AAAA[I];
03730 OUT(DSKO,CVS(AAAA[I]));
03740 END;
03750 OUT(DSKO,TB);
03760 COUNT←1;
03770 END;
03780 END;
03790 OUT(DSKO,CVXSTR(BBBB[I])&TB);
03800 COUNT←COUNT+1;
03810 LL←LL+AAAA[I]; QQ←QQ+1;
03820 IF LL≥KKKK THEN BEGIN
03830 LL←LL-KKKK; OUT(DSKO,CRLF&"****"&TB&CVS(QQ)&" Triphones"); COUNT←14; END;
03840 END;
03850 CLOSE(DSKO);
03860 OUT(TTY,CRLF&"OUTPUT FILE: TIPTST.LST");
03870
03880 END "TIPDAT";